package com.molin.IOtest.FileTest.lianxi;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

public class lianxi02 {
    public static void main(String[] args) {
        //统计一个文件夹中，每种文件出现的次数
        //统计 -- 利用map集合进行数据统计： 键-文件后缀 值：-次数
        File dir=new File("D:\\IdeaProjects");
        HashMap<String,Integer> map=new HashMap<>();
        getCount(map,dir);
//        map.keySet().stream().forEach(s->{
//            System.out.println(s+"\t"+map.get(s));
//        });
        map.forEach((extension,number)->{
            System.out.println(extension+":"+number);
        });
    }

    private static void getCount(HashMap<String, Integer> map, File dir) {
        File files[]=dir.listFiles();
        for (File file : files) {
            if(file.isFile()){
                String fileName=file.getName();
                String fileNameArr[]=fileName.split("\\.");
                if(fileNameArr.length==2){
                    String extension=fileNameArr[1];
                    //判断map中是否已经有该键
                    if(map.containsKey(extension)){
                        //如果已经记录了
                        int count=map.get(extension);
                        count++;
                        map.put(extension,count);
                    }else {
                        //第一次记录
                        map.put(extension,1);
                    }
                }
            }else {
                //如果是目录则向下寻找文件
                getCount(map,file);
            }
        }
    }
}
